package condominio.dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;

import com.mysql.jdbc.Connection;

import condominio.excepcion.DAOExcepcion;
import condominio.modelo.Horario;
import condominio.modelo.Horario_Vigilante;
import condominio.modelo.Persona;
import condominio.modelo.Ubicacion;
import condominio.modelo.Vigilante;
import condominio.util.ConexionBD;

public class Horario_VigilanteDAO extends BaseDAO{

	public Collection<Horario_Vigilante> listarHorarioVigilante() throws DAOExcepcion {
		System.out.println("Horario_VigilanteDAO: listarHorarioVigilante()");
//		Collection<Persona> p = new ArrayList<Persona>();
//		Collection<Horario> r = new ArrayList<Horario>();
//		Collection<Ubicacion> u = new ArrayList<Ubicacion>();
		Collection<Horario_Vigilante> c = new ArrayList<Horario_Vigilante>();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = (Connection) ConexionBD.obtenerConexion();
			
			String  query =  "Select p.ApePat, p.ApeMat, p.Nombres, p.Dni, p.Direccion, U.DescUbicacion, R.Turno, R.HoraDesde, R.HoraFin, H.FechaDesde, H.FechaFin From Horario_Vigilante H Inner Join Persona P on P.Idpersona = H.IdPersona Inner Join Horario R on R.IdHorario = H.IdHorario Inner Join Ubicacion U on U.IdUbicacion = H.IdUbicacion where p.idtipo = 3 ";
			stmt = con.prepareStatement(query);
			//executeQuery()para Selects
			rs = stmt.executeQuery();
			while (rs.next()) {
				
				Persona pe = new Persona();
				pe.setApePat(rs.getString("p.ApePat"));
				pe.setApeMat(rs.getString("p.ApeMat"));
				pe.setNombres(rs.getString("p.Nombres"));
				pe.setDni(rs.getString("p.Dni"));
				pe.setDireccion(rs.getString("p.Direccion"));

				Ubicacion ub = new Ubicacion();
				ub.setDescUbicacion(rs.getString("U.DescUbicacion"));

				Vigilante vi = new Vigilante();
				
				vi.setApePat(pe.getApePat());
				vi.setApeMat(pe.getApeMat());
				vi.setNombres(pe.getNombres());
				vi.setDni(pe.getDni());
				vi.setDireccion(pe.getDireccion());
				
//				p.add(pe);
				
//				u.add(ub);
				
				Horario ho = new Horario();
				ho.setTurno(rs.getString("R.Turno"));
				ho.setHoraDesde(rs.getString("R.HoraDesde"));
				ho.setHoraHasta(rs.getString("R.HoraFin"));
				
				
//				r.add(ho);
				
				Horario_Vigilante he = new Horario_Vigilante();
				he.setVigilante(vi);
				he.setUbicacion(ub);
				he.setHorario(ho);
				he.setFechaDesde(rs.getString("h.FechaDesde"));
				he.setFechaHasta(rs.getString("h.FechaFin"));
	
				c.add(he);
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return c;
	}	
	
}
